function clone1(target) {
    //类型判断
    if (typeof target === 'object' && target != null) {
        //判断数据是否为数组
        if (Array.isArray(target)) {
            return [...target]  //返回一个等于target的数组
        }
        else {
            return { ...target }  //返回一个等于target的对象
        }
    }
    else {
        return target
    }
}

function clone2(target) {
    if (typeof target === 'object' && target != null) {
        const result = Array.isArray(target)?[]:{}
        //遍历target数据
        for(let key in target)
        {
            //判断当前对象身上是否包含该属性
            if(target.hasOwnProperty(key)){
                result[key]=target[key]   //result身上添加属性key并且它的值等于target属性为key的值
            }
        }
        return result
    }
    else {
        return target
    }
}